package com.jiang.mall.mallcoupon;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 如何使用nacos作为配置中心统一管理配置
 * 1）、导入nacos配置依赖
 * <dependency>
 * <groupId>com.alibaba.cloud</groupId>
 * <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 * </dependency>
 * 在application.yml中向【注册中心】注册自己（下面还有个配置中心，初学易混）
 * 2）、bootstrap.properties编写配置信息（bootstrap.properties优先级高于application.properties)
 * 3）、在controller中
 *
 * @refreshScope 动态实时刷新配置
 * @value("${配置项的名}") 引用配置文件中的信息
 * 4）、在配置中心默认添加mall-coupon.properties配置文件。默认规则：应用名.properties
 * 配置中心的配置优先于bootstrap.properties的配置描述
 * 细节
 * 1）、命名空间
 * 默认public，默认新增的所有配置文件都保存在public空间
 * 利用命名空间做环境隔离，比如开发、测试、生产的运行环境相互隔离
 * 新增空间并且想调用其中的配置文件
 * 在bootstrap添加如下配置信息，调用哪个空间下的就写哪个空间的代号：
 * spring.cloud.nacos.config.namespace=db7868a9-5448-4441-bc83-cbe4facd2daa
 * 每一个微服务之间互相隔离配置，每个微服务都创建自己的命名空间，只加载自己命名空间下的配置
 * 2）、配置集:所有的配置的集合
 * 3）、配置集ID:Data Id的列表数据
 * 4）、配置分组
 * 在bootstrap添加如下配置信息：
 * spring.cloud.nacos.config.group=1111
 * 默认分组为 DEFAULT_GROUP
 * 不同的节日调用不同的分组 比如618 双11 双12，user.name可以用不同的名字
 * 总结：
 * 任何配置文件都可以写在配置中心中，使用两个注解：@Value+@ConfigurationProperties
 * <p>
 * GateWay
 * predicate:断言。判断请求路径是否符合某个路由规则【ROUTE】，再经过一层过滤昂【filter 对请求和响应进行一定程度的处理】，把发送来的的请求推送到指定的服务器
 * 补充：yml中的【-】所指的那个一个小层级，表示的是一个对象
 */

@MapperScan("com.jiang.mall.mallcoupon.dao")
@SpringBootApplication
@EnableDiscoveryClient
public class MallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(MallCouponApplication.class, args);
    }

}
